package com.better.frontend.Iservice.scoresegment;

import com.better.backend.dataComputingService.model.stuScore.ExamStudentScoreCalModel;
import com.better.common.base.ServiceResponse;
import com.better.frontend.model.scoresegment.ClassSementCompParm;
import com.better.frontend.model.scoresegment.ClassSementParm;
import com.better.frontend.model.scoresegment.ScoreSementParm;
import com.better.frontend.model.scoresegment.SegementParam;
import com.better.frontend.vo.scoreFootFault.ScoreFootFaultVo;
import com.better.frontend.vo.scoresegment.ScoreSegmentVo;
import org.springframework.data.domain.Page;

import javax.servlet.http.HttpServletResponse;

/**
 * Created by Administrator on 2017/12/1.
 */
public interface SegmentMangerService {
    /**
     * 查看考试学生的分数段信息
    *@author:
    *@date :2017/12/1
    */
    Page<ScoreSegmentVo> getSegment(ScoreSementParm sementParm);

    <T> T historicalStatistics(ScoreSementParm scoreSementParm);

    /**
     * 班级分析分数段统计
     * @param scoreSementParm
     * @return
     */
    ServiceResponse classSement(ClassSementParm scoreSementParm);
    /**
     * 班级分析分数段统计学生列表
     * @param scoreSementParm
     * @return
     */
    ServiceResponse classSementStudent(ClassSementParm scoreSementParm);
    /**
     * 班级分析分数段对比统计
     * @param classSementCompParm
     * @return
     */
    ServiceResponse classSementCompare(ClassSementCompParm classSementCompParm);

    /**
     * 班级分析分数段对比统计,总分和单科
     * @param classSementCompParm
     * @return
     */
    ServiceResponse classTotalAndSubSementCompare(ClassSementCompParm classSementCompParm);

    Page<ScoreFootFaultVo> getScoreFootFault(ScoreSementParm scoreSementParm);

    /**
     *
     * @param classSementCompParm
     * @return
     */
    ServiceResponse<?> classKnowledgeCompare(ClassSementCompParm classSementCompParm);

    /**
     *  历次考试成绩对比
     * @param classSementCompParm
     * @return
     */
    ServiceResponse<?> classExamCompare(ClassSementCompParm classSementCompParm);

    /**
     *  根据类型选择考试或者班级
     * @param segementParam
     * @return
     */
    ServiceResponse<?> getClassOrExam(SegementParam segementParam);

    /**
     *  下载查看成绩表格
     * @param scoreSementParm
     * @return
     */
    void scoreSegementDownload(ExamStudentScoreCalModel scoreSementParm, HttpServletResponse response);

    /**
     *  分数段列表导出
     * @param scoreSementParm
     * @return
     */
    void scoreSectionDownload(ScoreSementParm scoreSementParm,HttpServletResponse response);

    /**
     *  踩线生列表导出
     * @param scoreSementParm
     * @return
     */
    void stepLineDownload(ScoreSementParm scoreSementParm,HttpServletResponse response);

  /**
   *  班级分数段管理按科目导出
   * @param classSementParm
   * @param response
   */
    void classSementStudentDownload(ClassSementParm classSementParm, HttpServletResponse response);
}
